<!DOCTYPE html>
<html>
	<head>
		<title>Business业务层</title>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<script src="js/inc.js"></script>
	</head>
	<body>
		<fieldset>
                        <legend>Business业务层</legend>
                        <ol>
                                <li>
                                        <h2 class="title_h2">Business层介绍</h2>
                                        Business翻译是业务，那我们可以理解Business层主要是负责业务逻辑。
                                        <br>1.那数据访问层呢？
                                        <br>那么我这里简单介绍数据访问层，其实数据访问层就是我们的Dao层,Dao层是主要来绑表与表扩展。
                                        <br>2.那为什么不直接用Model呢？
                                        <br>因为为了提高我们的程序的易扩展性高可维护性和灵活性,把Model分Dao和Business层。
                                        <br>这样一来降低了业务耦合度，提高了业务层的内聚性，降低了软件的复杂度，增强了可维护性。
                                        <br>Dao层之间零耦合，复用性高。 
                                        <br>因此好的模型层应该分为Business层和Dao层，这也是soter提倡建议的结构设计。
                                        <br><b class="text_strong">提示：</b>
                                        <br>了解详细的Dao层,点击进入<a href="dao.html">Dao层</a>
                                </li>
				<li>
                                        <h2 class="title_h2">Business层规范</h2>
                                        1.Business类文件都放在<code>application/classes/Business</code>文件夹里面
                                        <br>2.Business必须要继承<code>Soter_Business</code>类，类名必须带<code>Business_</code>前缀。
                                        <br>示例如下：
                                        <br>1.新建Business文件application/classes/Business/TestBusiness.php
                                        <br>2.输入以下代码：
                                        <pre class="brush:php">
                                                &lt;?php

                                                class Business_TestBusiness extends Soter_Business {

                                                }
                                        </pre>
                                </li>
                                <li>
					<h2 class="title_h2">使用Business层</h2>
                                        可以在任意地方使用下面的代码加载一个business层类：
                                        <br>示例如下：
                                        <pre class="brush:php">
                                                Sr::business('TestBusiness');
                                        </pre>
                                        我们可以看到上面有一个参数，这个是什么意思呢，是加载business类的时候，不需要前缀<code>Business_</code>， 
                                        <br>比如上面的：Business_TestBusiness，加载的时候只用Sr::business('TestBusiness');
                                        <br>例如:我们要创建Business类文件名为ArticleBusiness.php，类名就是Business_ArticleBusiness，那么参数就要输入ArticleBusiness
				</li>
				<li>
					<h2 class="title_h2">示例一</h2>
					比如有文件：classes/Business/CommonUser.php 
                                        <br>那么CommonUser.php文件里面的类名就应该是：Business_CommonUser。
                                        <br>那么要加载Business类如下:
                                        <pre class="brush:php">
                                                Sr::business('CommonUser');
                                        </pre>
				</li>
				<li>
					<h2 class="title_h2">示例二</h2>
                                        比如有文件：classes/Business/Vip/User.php 
                                        <br>那么User.php文件里面的类名就应该是：Business_Vip_User,也就是下划线代表着文件夹的分隔符。
                                        <br>那么要加载Business类如下:
                                        <pre class="brush:php">
                                                Sr::business('Vip_User');
                                                //还有另一种方式例如以下
                                                Sr::business('Vip/User.php');
                                                //我们也可以不用带.php后缀,例如以下：
                                                Sr::business('Vip/User');
                                        </pre>
				</li>
				<li>
					<h2 class="title_h2">创建自己的Business类</h2>
                                        下面我们自定义一个加载Business层类
                                        <br>1.新建Business文件application/classes/Business/TestBusiness.php
                                        <br>2.输入以下代码：
                                        <pre class="brush:php">
                                                &lt;?php

                                                class Business_TestBusiness extends Soter_Business {

                                                        public function hello(){
                                                                return 'hello business';
                                                        }
                                                }  
                                        </pre>
                                        3.新建控制器文件application/classes/Controller/Welcome.php
                                        <br>4.输入以下代码：
                                        <pre class="brush:php">
                                                &lt;?php

                                                class Controller_Welcome extends Soter_Controller {

                                                        public function do_business() {
                                                                $business = Sr::business('TestBusiness');
                                                                echo $business->hello();
                                                        }
                                                }  
                                        </pre>                                        
                                        5.浏览器访问：http://127.0.0.1/index.php/Welcome/business.do
                                        <br>//将输出：hello business
                                        <br>为什么会输出“<b>hello business</b>”?
                                        <br>我们可以从上面例子看Controller_Welcome控制器类，
                                        <br>在do_business方法里面做了加载Business层中的Business_TestBusiness类赋值给<b>$business</b>。
                                        <br>然后通过<b>$business</b>输出Business_TestBusiness类中的hello方法,
                                        <br>所以浏览器才会显示“<b>hello business</b>”。
                                </li>   
                        </ol>
                </fieldset>
		<script src="js/inc.foot.js"></script>
	</body>
</html>
